#include <linux/module.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/configfs.h>
#include <linux/kernel.h>
#include <linux/kobject.h>
#include <linux/device.h>
#include <linux/sysfs.h>

extern struct bus_type mybus;

int mydriver_remove(struct device *dev)
{
    printk("This is mydriver_remove\n");
    return 0;
};

int mydriver_probe(struct device *dev)
{
    printk("This is mydriver_probe\n");
    return 0;
};

struct device_driver mydriver = {
    .name = "mydevice",
    .bus = &mybus,
    .probe = mydriver_probe,
    .remove = mydriver_remove,

};

// 模块的初始化函数
static int mydriver_init(void)
{
    int ret;
    printk("mydriver_init\n");

    ret = driver_register(&mydriver);

    return ret;
}

// 模块退出函数
static void mydriver_exit(void)
{
    printk("mydriver_exit\n");

    driver_unregister(&mydriver);
}

module_init(mydriver_init); // 指定模块的初始化函数
module_exit(mydriver_exit); // 指定模块的退出函数

MODULE_LICENSE("GPL");     // 模块使用的许可证
MODULE_AUTHOR("fangchen"); // 模块的作者